home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-06-22 | 3.1 KB | 143 lines | [TEXT/SPM ] |
- ;
- ; To build, copy the file path by holding down the cmd key and clicking on the window title,
- ; then open the Worksheet file and type "asm '" then paste, then type a "'" and press enter.
- ;
-
- Case On
-
- Import oldLaunch:Data
- Import oldGetResource:Data
- Import oldDrawPicture:Data
- Import oldSetTrapAddr:Data
- Import doCleanup:Data
- Import SETGLOB:Code
- Import RESETGLOB:Code
- Import _MYGETRESOURCE:Code
- Import MYDRAWPICTURE:Code
-
- _SetToolTrapAddress OPWORD $A647 ; <71>
-
- MySetTrapAddr Proc Export
- Move.L D0,-(SP)
- Cmp #$A647,D1 ; SetToolTrapAddress
- Bne @DontPatch
- And #$07FF,D0
- Cmp #$1A0,D0 ; GetResource
- Beq.S @DoOverpatch
- Cmp #$0F6,D0 ; DrawPicture
- Bne @DontPatch
- @DoOverpatch
- Move.L (SP),D0
- Move.L A0,-(SP) ; stack: A0.L, D0.L
- Pea @DoOverpatchRtn
- Subq #4,SP
- Link A6,#0 ; A6: A6.L, ?.L, A0.L, D0.L
- Movem.L D0-D2/A0-A1,-(SP)
- Jsr SETGLOB
- Move.L oldSetTrapAddr(A5),4(A6)
- Jsr RESETGLOB
- Movem.L (SP)+,D0-D2/A0-A1
- Unlk A6
- Rts
- @DoOverpatchRtn
- ; stack has Addr.L, trap.L
- Move.L D0,-(SP) ; save D0 on stack (D0.L, Addr.L, trap.L)
- Move.L 8(SP),D0 ; get old trap number
- And #$07FF,D0
- Cmp #$1A0,D0 ; GetResource
- Bne.S @1
- Lea @PtchSets,A0
- Tst.B (A0)
- Bne.S @10
- St (A0)
- Link A6,#0 ; A6: A6.L, D0.L, A0.L, D0.L
- Movem.L D0-D2/A1,-(SP)
- Jsr SETGLOB
- Move.L 8(A6),oldGetResource(A5) ; save oldGetResource
- Jsr RESETGLOB
- Movem.L (SP)+,D0-D2/A1
- Unlk A6
- Import MyGetResource:Code
- Lea MyGetResource,A0
- Bra.S @10
- @1 Cmp #$0F6,D0 ; DrawPicture
- Bne.S @2
- Lea @PtchSets+1,A0
- Tst.B (A0)
- Bne.S @10
- St (A0)
- Link A6,#0 ; A6: A6.L, D0.L, A0.L, D0.L
- Movem.L D0-D2/A1,-(SP)
- Jsr SETGLOB
- Move.L 8(A6),oldDrawPicture(A5) ; save oldDrawPicture
- Jsr RESETGLOB
- Movem.L (SP)+,D0-D2/A1
- Unlk A6
- Lea MYDRAWPICTURE,A0
- @10
- Pea @DoOverpatchRtn2
- Subq #4,SP
- Link A6,#0
- Movem.L D0-D2/A0-A1,-(SP)
- Jsr SETGLOB
- Move.L oldSetTrapAddr(A5),4(A6)
- Jsr RESETGLOB
- Movem.L (SP)+,D0-D2/A0-A1
- Unlk A6
- Move #$A647,D1 ; SetToolTrapAddress
- Rts
- @DoOverpatchRtn2
-
- @2
- Move.L (SP)+,D0 ; get the D0 result from the original patch
- Addq #8,SP
- Rts
-
- @PtchSets
- DC.B 0,0
-
- @DontPatch
- Move.L (SP),D0
- Link A6,#0
- Movem.L D0-D2/A0-A1,-(SP)
- Jsr SETGLOB
- Move.L oldSetTrapAddr(A5),4(A6)
- Jsr RESETGLOB
- Movem.L (SP)+,D0-D2/A0-A1
- Unlk A6
- Rts ; jump to old SetTrapAddress
- Endp
-
- MyGetResource Proc Export
- Subq #4,SP ; stack has: ?.L, retAddr.L, id.W, type.L
- Link A6,#0 ; A6 frame: A6.L, ?.L, rA.L, id.W, type.L
- Movem.L D0-D2/A0-A1,-(SP)
- Jsr SETGLOB
- Move.L oldGetResource(A5),4(A6)
-
- Move.L 14(A6),-(SP) ; put the type on the stack
- Move 12(A6),-(SP) ; put the id on the stack
- Jsr _MYGETRESOURCE
-
- Jsr RESETGLOB
- Movem.L (SP)+,D0-D2/A0-A1
- Unlk A6
- Rts
- Endp
-
- MyLaunch Proc Export
- DC.W $A9FF
- Subq #4,SP
- Link A6,#0 ; stack has: A6.L, ?.L, retAddr.L
- Movem.L D0-D2/A0-A1,-(SP)
- Jsr SETGLOB
- Move.L oldLaunch(A5),4(A6)
- St doCleanup(A5)
- Jsr RESETGLOB
- Movem.L (SP)+,D0-D2/A0-A1
- Unlk A6
- Rts ; jump to old Launch trap
- Endp
-
- End
-